package fr.uniscol.service.impl;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import fr.uniscol.dao.IGeographieDao;
import fr.uniscol.model.geo.Academie;
import fr.uniscol.model.geo.Commune;
import fr.uniscol.model.geo.Departement;
import fr.uniscol.model.geo.Pays;
import fr.uniscol.service.IGeographieService;

public class GeographieServiceImpl implements IGeographieService {

	private List<Academie> academies = null;
	
	private List<Departement> departements = null;
	
	private List<Commune> communes = null;
	
	private List<Pays> pays = null;
	
	private IGeographieDao geoDao;
	
	public void setGeoDao(IGeographieDao geoDao) {
		this.geoDao = geoDao;
	}

	@Transactional(readOnly=true)
	public List<Academie> getAllAcademies() {
		return geoDao.getAllAcademies();
	}

	@Transactional(readOnly=true)
	public Academie getAcademie(int code) {
		return geoDao.getAcademie(code);
	}

	@Transactional(readOnly=true)
	public List<Departement> getAllDepartements() {
		return geoDao.getAllDepartements();
	}

	@Transactional(readOnly=true)
	public List<Pays> getAllPays() {
		return geoDao.getAllPays();
	}

	@Transactional(readOnly=true)
	public List<Commune> getAllCommunes() {
		return geoDao.getAllCommunes();
	}

	@Transactional(readOnly=true)
	public Departement getDepartement(String code) {
		return geoDao.getDepartement(code);
	}

	@Transactional(readOnly=true)
	public Pays getPays(int code) {
		return geoDao.getPays(code);
	}

	@Transactional(readOnly=true)
	public Commune getCommune(int code) {
		return geoDao.getCommune(code);
	}

	@Transactional(readOnly=false)
	public void enregistrerPays(List<Pays> pays) {
		for(Pays p : pays){
			geoDao.enregistrerPays(p);
		}
	}
	
	@Transactional(readOnly=false)
	public void enregistrerDepartements(List<Departement> departements) {
		for(Departement d : departements){
			geoDao.enregistrerDepartement(d);
		}
	}
	
	@Transactional(readOnly=false)
	public void enregistrerCommunes(List<Commune> communes) {
		for(Commune com : communes){
			geoDao.enregistrerCommune(com);
		}
	}
}
